<?php
if ('game.php' == basename($_SERVER['SCRIPT_FILENAME']))
		die ('Please do not load this page directly. Thanks!');

function printquest($team_id) { //Вывод текущего вопроса для текушей команды
	$query= "SELECT `quest`,`poryadok` FROM `quests` WHERE `id` = (SELECT `cur_quest` FROM RESULTS WHERE `team_id`={$team_id} LIMIT 1)";
	$sqlindex=mysql_query($query) or die(mysql_error());
	$sqlarray = mysql_fetch_assoc($sqlindex);
    /*if (nextquest($team_id,0) == 'endgame'){
     print 'Пропало усё!';   
    }
    else{ */
        
    
    
	print "<p><b>Задание: {$sqlarray['poryadok']}</b></p>";
	print "<p>".$sqlarray['quest']."</p>";

	$query = "SELECT `hint` FROM `hints`,`results` WHERE `quest_id` = (SELECT `cur_quest` FROM RESULTS WHERE `team_id`={$team_id} LIMIT 1) AND
 	(DATE_ADD(quest_start, INTERVAL `period` SECOND) < NOW())";
	$sqlhintindex=mysql_query($query) or die(mysql_error());
		for ($i=1;$i <=  mysql_num_rows($sqlhintindex);$i++){
		$sqlhint=mysql_fetch_assoc($sqlhintindex);
		print "<b>Подсказонька ".$i."</b>";
		print "<p>".$sqlhint['hint']."</p>";
    }

	print "<p><i>
	Введите ответ:</i> <br /><input title=\"answer\" name=\"answer\" /> <br />
	</p>
	<do type=\"accept\" label=\"Послать\">
    <go href=\"index.php\" method=\"get\">
    <postfield name=\"pincode\" value=\"$(pincode)\" />
    <postfield name=\"answer\" value=\"$(answer)\" />
    </go>
	</do>";
}









function nextquest($team_id,$period){ //Сбросывает все записи из текущей в стат, а резалt пишет данные следующего квеста
		    $query = "SELECT `poryadok`,`id`, `game_id` FROM `quests` WHERE `id`=(SELECT `cur_quest` FROM results WHERE `team_id` =".$team_id." LIMIT 1) LIMIT 1";
			$sqlporyadokindex = mysql_query($query) or die(mysql_error());
			if (mysql_num_rows($sqlporyadokindex)==1){
			$sqlporyadok = mysql_fetch_assoc($sqlporyadokindex);
			$sqlporyadok['poryadok']++;
			//echo "Игра идёт ".$sqlporyadok['game_id'];
			$query = "SELECT `id` FROM `quests` WHERE `game_id`=".$sqlporyadok['game_id']." AND `poryadok`={$sqlporyadok['poryadok']} LIMIT 1";
            //echo "Poryadok ".$query;
			$sqlporyadokindex = mysql_query($query) or die(mysql_error());
			        	if (mysql_num_rows($sqlporyadokindex)==1){

						$sqlquestid = mysql_fetch_assoc($sqlporyadokindex);
						
                        if ($period>0) {
                            
                        $query = "SELECT `quest_start` FROM RESULTS WHERE `team_id` = {$team_id} LIMIT 1";
                        $sql = mysql_query($query) or die(mysql_error());
                        $sql = mysql_fetch_assoc($sql);
                            
                            
                        $query = "UPDATE results SET
									`cur_quest` = {$sqlquestid['id']},
									`quest_start` = DATE_ADD('{$sql['quest_start']}', INTERVAL {$period} SECOND)
                                    WHERE 
                                    `team_id` = {$team_id}";
                        //echo $query;
                        }
                        else
                        {            
                        $query = "UPDATE results SET
									`cur_quest` = {$sqlquestid['id']},
									`team_id` = {$team_id},
									`quest_start` = NOW()";
                        }            
                                    
						mysql_query($query) or die(mysql_error());
						}
                        else
                        {
                         //echo 'Игра окончена (квесты кончились)!';
                         //return 'endgame';
                         //Сообщить комманде что Усё, но саму игры не останавливать   
                        }
			}
	}





function game_over(){
    
  print '<p>GAME OVER</p>';
   
}









function lastquest($team_id){ //Сбросывает все записи из текущей в стат, а резалt пишет данные следующего квеста
		    $query = "SELECT `poryadok`,`id`, `game_id` FROM `quests` WHERE `id`=(SELECT `cur_quest` FROM results WHERE `team_id` =".$team_id." LIMIT 1) LIMIT 1";
			$sqlporyadokindex = mysql_query($query) or die(mysql_error());
			if (mysql_num_rows($sqlporyadokindex)==1){
			$sqlporyadok = mysql_fetch_assoc($sqlporyadokindex);
			$sqlporyadok['poryadok']++;
			//echo "Игра идёт ".$sqlporyadok['game_id'];
			$query = "SELECT `id` FROM `quests` WHERE `game_id`=".$sqlporyadok['game_id']." AND `poryadok`={$sqlporyadok['poryadok']} LIMIT 1";
            //echo "Poryadok ".$query;
			$sqlporyadokindex = mysql_query($query) or die(mysql_error());
			        	if (mysql_num_rows($sqlporyadokindex)!=1){
			        	    return 'yes';
						//Сообщить комманде что Усё, но саму игры не останавливать   
                        }
                        else
                        {
                         //echo 'Игра окончена (квесты кончились)!';
                            return 'no';
                         }
			}
	}







	$query = "SELECT SUM(`time`) AS `time` FROM quests WHERE `game_id`={$game_id};";
   	$sql=mysql_query($query) or die(mysql_error());
    $sqlarray = mysql_fetch_assoc($sql);
    



	$query = "SELECT `id` FROM `game` WHERE `id` = {$game_id} AND
 	(DATE_ADD(start_date, INTERVAL {$sqlarray['time']} SECOND) < NOW()) LIMIT 1";
    
	$sql=mysql_query($query) or die(mysql_error());
    if (mysql_num_rows($sql)==1){
        
        
        $query = "UPDATE
           quest.game
           SET
           `status`=4
           WHERE `id`={$game_id};";
	       mysql_query($query) or die(mysql_error());
           $msg .= "Игра завершена, обновите страницу!";
        }
        else
        {
            //$msg .= "Пошла жора!";
            if (isset($_GET['pincode'])){
   			if (is_numeric($_GET['pincode'])){
   				$query = "SELECT
      			`team_id`, `team`, `status`
    			FROM
      			application, teams
    			WHERE
      			`pin`='{$_GET['pincode']}' AND application.`team_id`=teams.`id` AND `game_id`={$game_id}
    			LIMIT 1;";
				$sql = mysql_query($query) or die(mysql_error());
				if (mysql_num_rows($sql)==1)	{
                      	$sqlteam = mysql_fetch_assoc($sql);
                        $team_id = $sqlteam['team_id'];
                        if ($sqlteam['status'] == 3){ //Проверям пройдена ли уже игра
                            game_over();
                            
                        }
                        else{
						//$msg .=  'Пин код верен';

                        //Не закончили ли уже игру
//                        $query="SELECT `status` FROM APPLICATION
//                                        WHERE `status` != 3 AND `team_id` = {$team_id} AND `game_id` = {$game_id} LIMIT 1";
//                        $sql = mysql_query($query) or die (mysql_error());
//                        if (mysql_num_rows($sql)==1){

                        
                        //ПРоверяем взят ли уже квест
                        $query="SELECT `cur_quest` FROM RESULTS
                                        WHERE `team_id` = {$team_id} LIMIT 1";
                        $sql = mysql_query($query) or die (mysql_error());
                        if (mysql_num_rows($sql)==1){
                            //Проверяем в цикле время
                            //echo "Добавляем запись в БД";
                                //фетчим предидущий запрос
                                $sql = mysql_fetch_assoc($sql);    
                                $cur_quest = $sql['cur_quest'];
                            
                            while (1) {                             
                                
                                $query="SELECT `cur_quest` FROM RESULTS
                                        WHERE `team_id` = {$team_id} LIMIT 1";
                                $sql = mysql_query($query) or die (mysql_error());                                
                                $sql = mysql_fetch_assoc($sql);    
                                $cur_quest = $sql['cur_quest'];                                
                                
                            	$query = "SELECT `time` FROM quests WHERE `id`={$cur_quest};";
   	                            $sql=mysql_query($query) or die(mysql_error());
                                $sqlarray = mysql_fetch_assoc($sql);  


	                           $query = "SELECT results.`team_id` FROM RESULTS, APPLICATION WHERE `cur_quest` = {$cur_quest} AND
 	                          (DATE_ADD(quest_start, INTERVAL {$sqlarray['time']} SECOND) < NOW()) AND `status`!=3 LIMIT 1";
                              //echo $query."<br>";
                               $sql = mysql_query($query) or die (mysql_error());
                               
                               if (mysql_num_rows($sql) == 1) {
                                
                                //echo "Меняем текущий вопрос!";
                               
                               if (lastquest($team_id) == 'yes') {
                               //Обновляем статистику для этой комманды
                                         $query="INSERT INTO stats SET
			        					`team_id` = {$team_id},
			        					`game_id` ={$game_id},
			        					`quest_id` = {$cur_quest},
                                        `period` = {$sqlarray['time']}";
                                        mysql_query($query) or die (mysql_error());
                                //Удаляем данные из результатов
                                         $query="DELETE FROM RESULTS WHERE
			        					`team_id` = {$team_id}";
                                        mysql_query($query) or die (mysql_error());

                                //Переводим статус заявки в "пройдена"
                                       $query="UPDATE APPLICATION SET
			        					`status` = 3
                                        WHERE
                                        (`team_id` = {$team_id} AND
                                        `game_id` = {$game_id});";
                                        mysql_query($query) or die (mysql_error());
                                        print '<p>игра закончилась по таймауту</p>';
                                        //print $query;
                                    break; 

                                    }
                                    else
                                    {
                                        $query="INSERT INTO stats SET
			        					`team_id` = {$team_id},
			        					`game_id` ={$game_id},
			        					`quest_id` = {$cur_quest},
                                        `period` = {$sqlarray['time']}";
                                        mysql_query($query) or die (mysql_error());
                                        nextquest($team_id, $sqlarray['time']);
                                    }
                                    
                               }
                               else{
                               break;
                               } //Официальный!
                            }

                                

                            
                        
                        
                        
                        
                        
    //Проверяем пришёл ли кот
	if (isset($_GET['answer'])){
    $answer = mysql_escape_string($_GET['answer']);
    $query="SELECT * FROM `codes` WHERE `code` = '{$answer}' AND `quest_id` = {$cur_quest} LIMIT 1";
	$sqlcodes = mysql_query($query) or die(mysql_error());
	      // $msg .=  "Начали проверку кодов!".mysql_num_rows($sqlcodes);
		if (mysql_num_rows($sqlcodes) == 1){
           //$msg .=  "<p>Код принят!";

            $query="SELECT * FROM `answers` WHERE `answer` = '{$answer}' AND `quest_id` = {$cur_quest} LIMIT 1";
			$sqlcodes = mysql_query($query) or die(mysql_error());
           		 if (mysql_num_rows($sqlcodes) == 1){
            		$msg .= "<p>Данный код уже был принят!</p>";
            	}
            	else{
            		//echo "Пишем код в таблицу с ответами";
            		$query="INSERT INTO answers
            		SET
            		 `quest_id`={$cur_quest},
            		 `team_id`={$team_id},
            		 `answer`='{$answer}';";
            		  mysql_query($query) or die(mysql_error());
            		$msg .= "<p>Код принят!</p>";
                    }

        }
			else{
			 $msg .= "<p>Код не верный!</p>";}
    
    
    $query = "SELECT code FROM codes WHERE `quest_id` = {$cur_quest};";
   	$sqlcodes=mysql_query($query) or die(mysql_error());
    $query = "SELECT answer FROM answers WHERE `quest_id` = {$cur_quest} AND `team_id`={$team_id};";
   	$sqlanswers = mysql_query($query) or die(mysql_error());
    $msg .= "<p>Кодов всего на задание ".mysql_num_rows($sqlcodes)."</p>";
   	$msg .= "<p>Уже принято кодов ".mysql_num_rows($sqlanswers)."</p>";
     if (mysql_num_rows($sqlcodes) == mysql_num_rows($sqlanswers)) {  //Задание закончено, оформляем переход на следующее
     
    if (lastquest($team_id) =='no') { //Если не последний, обновляем статистику и переходим на следующий квест
        
        $query="INSERT INTO stats SET
   					`team_id` = {$team_id},
   					`game_id` ={$game_id},
   					`quest_id` = {$cur_quest},
                    `period` = (SELECT TIME_TO_SEC(TIMEDIFF(NOW(),`quest_start`)) FROM results WHERE `cur_quest`={$cur_quest} LIMIT 1)";
        mysql_query($query) or die (mysql_error());
        $msg=''; //Шоб не флудило на новом квесте
        nextquest($team_id,0);}
        else
	{
	   
                                   //Обновляем статистику для этой комманды
                                         $query="INSERT INTO stats SET
			        					`team_id` = {$team_id},
			        					`game_id` ={$game_id},
			        					`quest_id` = {$cur_quest},
                                        `period` = (SELECT TIME_TO_SEC(TIMEDIFF(NOW(),`quest_start`)) FROM results WHERE `cur_quest`={$cur_quest} LIMIT 1)";
                                        mysql_query($query) or die (mysql_error());
                                //Удаляем данные из результатов
                                         $query="DELETE FROM RESULTS WHERE
			        					`team_id` = {$team_id}";
                                        mysql_query($query) or die (mysql_error());

                                //Переводим статус заявки в "пройдена"
                                       $query="UPDATE APPLICATION SET
			        					`status` = 3
                                        WHERE
                                        (`team_id` = {$team_id} AND
                                        `game_id` = {$game_id});";
                                        mysql_query($query) or die (mysql_error());
                                        $msg=''; //Шоб не флудило на гамовере   
       
	}
    }
    } 
                        
                        
                        
                        
//-----------------------                        
                        
                $query = "SELECT
      			 *
    			FROM
      			application
    			WHERE
      		    `team_id`={$team_id} AND `game_id`={$game_id} AND `status`=3
    			LIMIT 1;";
				$sql = mysql_query($query) or die(mysql_error());
				if (mysql_num_rows($sql)==1)	{
                              game_over();
                        }
                        else{                    
                        
                            print $msg;
                                printquest($team_id);
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                        }  
                                
                           }
                            else
                            { 
                                //Добавляем запись о старте квеста
                                    $query = "SELECT `id` FROM `quests` WHERE `game_id` = {$game_id} AND `poryadok` = 1 LIMIT 1";
                                    $sqlquestindex=mysql_query($query) or die(mysql_error());
                                    $sqlquestarray = mysql_fetch_assoc($sqlquestindex);
                                    
                                    
                                    $query = "INSERT INTO `results` SET
									`cur_quest` = {$sqlquestarray['id']},
									`team_id` = {$team_id},
									`quest_start` = NOW()";
	                                mysql_query($query) or die(mysql_error());
                                    
                                    printquest($team_id);
                            }
//                            }
//                            else
//                            {game_over();}



				}
                }
				else{
			 	echo 'Вы ввели неверный пин-код.';
                    $msg .= "<p>Текущая игра: <h3>{$game_title}</h3></p>
	               <p>
                Введите пин-код: <br /><input title=\"pincode\" name=\"pincode\" /> <br />
	               </p>
	               <do type=\"accept\" label=\"Send\">
                    <go href=\"index.php\" method=\"get\">
                    <postfield name=\"pincode\" value=\"$(pincode)\" />
                    </go>
	           </do>";
            }

			}
			else
             {       echo 'Пин-код может содержать только цифры.';

                    echo "<p>Текущая игра: <h3>{$game_title}</h3></p>
	               <p>
                Введите пин-код: <br /><input title=\"pincode\" name=\"pincode\" /> <br />
	               </p>
	               <do type=\"accept\" label=\"Send\">
                    <go href=\"index.php\" method=\"get\">
                    <postfield name=\"pincode\" value=\"$(pincode)\" />
                    </go>
	           </do>";
			 	
        }
        }
    else
    {
    echo "<p>Текущая игра: <h3>{$game_title}</h3></p>
	<p>
	Введите пин-код: <br /><input title=\"pincode\" name=\"pincode\" /> <br />
	</p>
	<do type=\"accept\" label=\"Send\">
    <go href=\"index.php\" method=\"get\">
    <postfield name=\"pincode\" value=\"$(pincode)\" />
    </go>
	</do>";

   }
        
        
        
        
        
        
        
        }


//echo $msg;


?>